package com.smartlifev30.dao;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import org.greenrobot.greendao.Property;
import org.greenrobot.greendao.query.WhereCondition;

import java.util.List;

/**
 * @author tys
 * @date 2018/8/30
 */

public interface IDaoOperation<T> {

    long insert(@NonNull T obj);

    void insert(@NonNull List<T> objs);

    long insertOrReplace(@NonNull T obj);

    void insertOrReplaceList(@NonNull List<T> objs);

    /**
     * @param and_or    and 或者 or
     * @param whereArgs 条件
     * @param offset    偏移
     * @param limit     返回最大个数
     * @param order     asc 或 desc
     * @param filed     Property
     * @return
     */
    List<T> query(@Nullable String and_or, @Nullable WhereCondition[] whereArgs,
                  @Nullable Integer offset, @Nullable Integer limit, @Nullable String order, @Nullable Property... filed);

    /**
     * @param and_or
     * @param whereArgs
     * @return 满足条件的唯一结果或者null
     */
    T uniqueQuery(@Nullable String and_or, @NonNull WhereCondition[] whereArgs);

    void update(@NonNull T newObj);

    void delete(@NonNull T obj);

    void deleteAll();

}
